Modern application programs that are designed to run on compact electronic devices such as a smartphone, media player, Personal Digital Assistant (PDA), cellular telephone, web appliance, computer, laptop computer or tablet computing device, for example, typically include a dynamic user interface that transitions frequently from one user interface display to a different one. Small screen size allows relatively little room for an interface display. A solution to this size limitation has been to dynamically swap out a currently displayed interface and to replace it with a different interface as needed. For example, one user interface display may present a menu of items that can be selected through user interaction with the user interface, and a next user interface display may show details of an item selected from the previous menu display. A typical application program can smoothly transition though multiple user interface displays in response to user input, for example. The transitions typically occur smoothly rather than abruptly so that a user can more easily perceive and follow them.
A dynamic user interface typically is generated using discrete object classes often referred to as view object classes. For consistency, these discrete view object classes shall be referred to herein as “views” although they also have been referred to alternatively as “widgets” or “controllers”. The views may be part of a framework provided as system software within the device. Developer-created user interface elements typically include aggregates of these system-provided views. A view ordinarily is implemented as a view object class that knows how to draw itself, so as to produce a visual user interface element, within an area of the interface. Typically each view is associated with code to render itself and its children. Often the precise manner in which a view is rendered is not stored in a structured manner. As a result, for example, for some views, a child view may be rendered anywhere on a display screen or not at all, and children may be rendered in any order; the first child need not be rendered before the second child, for example. Thus, a view object configures a device to generate a visual user interface element represented by the view.
Views are used to create visual user interface elements that a user can see and interact with to change the user interface display. More specifically, some views are associated with methods that can configure a device to implement a transition between user interface displays in reaction to user interactions such as a user tapping or swiping a user interface display.
A user interface display may simultaneously include multiple different user interface elements, each produced using a different corresponding view. A view hierarchy serves as the primary mode of the layout organization of user interface elements in a user interface. The structure of a view hierarchy indicates the layout of corresponding user interface elements that correspond to views in the hierarchy. In general, a view can have subviews, and conversely, a subview can have a superview. Ordinarily, for example, if a view is removed from a view hierarchy, its subviews are removed also. If a view's location within a view hierarchy is moved, its subviews also move with it.
In some dynamic user interfaces, the screen areas that are occupied by user interface elements can overlap. In some user interfaces, a view's position in a view hierarchy dictates the order in which a user interface element that corresponds to the view is drawn, and thereby determines whether it appears in front of or behind other user interface elements that correspond to other views in a view hierarchy. Sibling subviews of the same superview can have a layering order that specifies which sibling view corresponds to a user interface element that is behind (i.e. beneath) another user interface element that corresponds to another sibling view. A sibling subview that is specified as being behind its sibling subview is drawn first, so if there is overlap in the areas of the sibling views, the user interface element corresponding to the first drawn sibling view will appear to be behind the later-drawn user interface element corresponding to its sibling. In other words, a view that is to appear at least partially in front of another view is drawn after the view that it is to hide so as to supersede drawing instructions for the underlying view. Similarly, a superview is drawn first, so it will appear to be behind its subviews.
A window object may be disposed at the top of a typical view hierarchy, and therefore, may be the ultimate superview of all other currently visible views. In general, a window is a type of view object that has an area that typically occupies the entire user interface display screen so as to form a background to all other currently visible views. Thus, other views are visible by virtue of being subviews of the window object.
In some dynamic user interfaces, the management of transitions between user interface displays resides in a view controller, which can be an instance of an object controller class. In some dynamic user interfaces, a view controller manages a single view, which can have subviews. A view controller typically can possess a view property that points to the view it manages. In some user interfaces, view controllers also can have hierarchical relationships with each other that align with the relationships among the views that they control. For example, in some user interfaces, a view controller can contain another view controller. The containing view controller can be referred to as the parent of the contained view controller and the contained view controller can be referred to as a child of the containing view controller. This containment relationship among the view controllers may be reflected in their views: a child view controller's view is a subview of the parent view controller's view.
In some prior interfaces, different user interface screen display corresponds to different view hierarchies in which views in the view hierarchy are used together to generate the visible user interface elements in the screen display. View controllers manage the views in a view hierarchy to generate corresponding user interface elements. Since multiple view controllers may be involved in managing multiple views, the view controllers coordinate with each other in managing the views to generate the visible user interface elements. In particular, in some user interfaces a root view controller may acts to supply a view that covers the entire window and acts as the superview for all other controllers. Typically, in the course of a transition from one user interface screen display to the next, a user interface display associated with a previous view hierarchy is dismissed, so that it is no longer visible, and a next user interface display associated with a next view hierarchy is generated.
Often, an application program's view hierarchy includes a root view controller that may act as a navigation controller that allows other view controllers to be pushed and popped and that may cause a display of a header on a user interface screen display that may include a user interface button to “push” or “pop” a stack of view controllers, e.g., to go forward or back. In cases in which a root view controller acts as a navigation controller, it may handle animated transitions between user interface displays so as to provide smooth transitions that a device user can understand and follow more easily, for example.
FIGS. 1A-1B are illustrative drawings of an example application user interface screen display (FIG. 1A) and a corresponding view hierarchy (FIG. 1B) used to produce the display. FIG. 1A shows an illustrative example screen display 1302 that includes the following visual user interface elements: a navigation panel 1304, an item name panel 1306 and an item image panel 1308, which displays a photographic image (not shown) of the named item.
FIG. 1B shows an illustrative example view hierarchy 1322. Constituents of the view hierarchy include a window view object 1324, a view 1326 and a subview 1328. The window contains the view 1326. The view 1326 generates the navigation panel 1304. The view 1326 includes the subview 1328. The subview 1328 is used to generate the item name panel 1306 and the item image panel 1308. Constituents of the view hierarchy also include a UINavigationController 1330 and a UIViewControllerSubclass 1332. The UINavigationController 1330 controls the view object 1326. The UIViewControllerSubclass 1332 controls the subview object 1328. The UINavigationController 1330 is a parent of the UIViewControllerSubclass 1332. The UINavigationController 1330 acts as a root controller.
Application programs that include dynamic user interfaces may be distributed to thousands or millions of devices. It has become common practice in application program development to frequently iterate and change possible user interface designs even after distribution of the application. For example, changes may be made to an application while it remains available for use on a user device, without deploying a new version of the application, to experimentally ascertain which user interface designs users respond to most favorably. There has been a need for improvement in ease of user interface management involving changes to the application user interfaces of remotely located devices while interfaces remain available for use by device users.